﻿/*
 ***************************************************************************
 * Microsoft Visual C# .NET
 * 名称：       App_System_Mst_GroupMaintenance
 * 类型：       部门维护
 * 功能说明：   添加/更改/删除部门权限
 * 作者：       谈震鸣
 * 创建日期：   2007/08/14
 * 修改日期     修改者      修改内容
 * 
 * 
 * ---
 ***************************************************************************
 */
#region 引用
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Shpm.App.Commons.Db.Beans.Master;
using Shpm.System.Auth.Dao;
using Shpm.App.Commons.Db.Beans.Inp;
using Shpm.System.Auth.Beans;
using Shpm.System;
#endregion
public partial class App_System_Mst_GroupMaintenance : System.Web.UI.Page
{
    bool systemFlg = false; //判断是否是超级组
    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    #endregion

    #region 检索按钮
    /*
     *名称： btnSelect_Click
     *功能： 左击检索按钮
     *参数： 无
     *返回： 无
     *说明： 无
    */
    protected void btnSelect_Click(object sender, EventArgs e)
    {
        GroupClear();
        if (ComValidator1.DoValidator()) SelectGroup(txtGroupIdSel.Text);
    }
    #endregion

    #region 清空部门信息
    /*
     *名称： GroupClear
     *功能： 画面初始化
     *参数： 无
     *返回： 无
     *说明： 无
    */
    private void GroupClear()
    {
        txtGroupId.Text = string.Empty; 
        txtGroupName.Text=string.Empty;
        lblGroupId.Text = string.Empty;
        lblUserGroupId.Text = string.Empty;
        lstSetPermission.Items.Clear();
        lstGetPermission.Items.Clear();
        lstSetUser.Items.Clear();
        lstGetUser.Items.Clear();
    }
    #endregion

    #region 设置部门信息
    /*
     *名称： SelectGroup
     *功能： 显示画面信息
     *参数： str 部门编号
     *返回： 无
     *说明： 无
    */
    private void SelectGroup(string str)
    {
        if (str != string.Empty)
        {
            MstGroupBean dataBean = new MstGroupBean();
            dataBean.GroupId = str;
            GroupMaintenanceDao Dao = new GroupMaintenanceDao();
            IList dataList = Dao.FindByMstGroup(dataBean);
            if (dataList.Count > 0)
            {
                dataBean = (MstGroupBean)dataList[0];
                txtGroupId.Text = dataBean.GroupId;
                txtGroupName.Text = dataBean.GroupName;
                lblGroupId.Text = dataBean.GroupId;
                lblUserGroupId.Text = dataBean.GroupId;
                if (txtGroupId.Text == Constants.SYSTEM_GROUP_ID)
                {
                    systemFlg = true;
                }

                SetSelectAuthority(lblGroupId.Text);
                SetUserAuthority(lblGroupId.Text);
                SetUser(lblUserGroupId.Text);
                GetUser(lblUserGroupId.Text);
            }
            else
            {
                string strErr = HttpContext.GetGlobalResourceObject("Message", "E0203") as string;
                ((Design_MasterPage)this.Master).InfoMessage = strErr.Replace("{0}", "部门");
            }
        }
    }
    #endregion

    #region 可赋予的权限
    /*
     *名称： SetSelectAuthority
     *功能： 将符合条件的数据显示在可赋予权限的LIST中
     *参数： str 部门编号
     *返回： 无
     *说明： 无
     */
    private void SetSelectAuthority(string str)
    {
        if (str != string.Empty && systemFlg ==false)
        {
            ClassNameBean dataBean = new ClassNameBean();
            GroupMaintenanceDao Dao = new GroupMaintenanceDao();
            dataBean.GroupId  = str;
            IList dataList = Dao.FindByMstClassName(dataBean);
            if (dataList.Count > 0)
            {
                IEnumerator enm = dataList.GetEnumerator();
                while (enm.MoveNext())
                {
                    dataBean = enm.Current as ClassNameBean;
                    ListItem itm = new ListItem(dataBean.Display, dataBean.ClassName);
                    lstSetPermission.Items.Add(itm);
                }
            }
            else
            {
            }
        }
    }
    #endregion

    #region 已赋予的权限
    /*
     *名称： SetUserAuthority
     *功能： 将符合条件的数据显示在已赋予的权限的LIST中
     *参数： str 部门编号
     *返回： 无
     *说明： 无
     */
    private void SetUserAuthority(string str)
    {
        if (str != string.Empty && systemFlg ==false)
        {
            ClassNameBean dataBean = new ClassNameBean();
            GroupMaintenanceDao Dao = new GroupMaintenanceDao();
            dataBean.GroupId = str;
            IList dataList = Dao.FindByMstClassNameUser(dataBean);
            if (dataList.Count > 0)
            {
                IEnumerator enm = dataList.GetEnumerator();
                while (enm.MoveNext())
                {
                    dataBean = enm.Current as ClassNameBean;
                    ListItem itm = new ListItem(dataBean.Display, dataBean.ClassName);
                    lstGetPermission.Items.Add(itm);
                }
            }
            else
            {
            }
        }
        else if (str != string.Empty)
        {
            ClassNameBean dataBean = new ClassNameBean();
            GroupMaintenanceDao Dao = new GroupMaintenanceDao();
            dataBean.GroupId = str;
            IList dataList = Dao.FindByAllClassName(dataBean);
            if (dataList.Count > 0)
            {
                IEnumerator enm = dataList.GetEnumerator();
                while (enm.MoveNext())
                {
                    dataBean = enm.Current as ClassNameBean;
                    ListItem itm = new ListItem(dataBean.Display, dataBean.ClassName);
                    lstGetPermission.Items.Add(itm);
                }
            }
            else
            {
            }
        }
    }
    #endregion

    #region 可添加的职员
    /*
     *名称： SetUser
     *功能： 将符合条件的数据显示在可添加的职员的LIST中
     *参数： str 部门编号
     *返回： 无
     *说明： 无
     */
    private void SetUser(string str)
    {
        if (str != string.Empty)
        {
            InpUserGroupBean dataBean = new InpUserGroupBean();
            dataBean.GroupId = str;
            GroupMaintenanceDao Dao = new GroupMaintenanceDao();
            IList dataList = Dao.FindByInpUserGroup(dataBean);
            if (dataList.Count > 0)
            {
                IEnumerator enm = dataList.GetEnumerator();
                while (enm.MoveNext())
                {
                    dataBean = enm.Current as InpUserGroupBean;
                    ListItem itm = new ListItem(dataBean.SysUserId,dataBean.SysUserId);
                    lstSetUser.Items.Add(itm);
                }
            }
        }
    }
    #endregion

    #region 已添加的职员
    /*
     *名称： GetUser
     *功能： 将符合条件的数据显示在已添加的职员的LIST中
     *参数： str 部门编号
     *返回： 无
     *说明： 无
     */
    private void GetUser(string str)
    {
        if (str != string.Empty)
        {
            InpUserGroupBean dataBean = new InpUserGroupBean();
            dataBean.GroupId = str;
            GroupMaintenanceDao Dao = new GroupMaintenanceDao();
            IList dataList = Dao.FindByInpUserGroupUser(dataBean);
            if (dataList.Count > 0)
            {
                IEnumerator enm = dataList.GetEnumerator();
                while (enm.MoveNext())
                {
                    dataBean = enm.Current as InpUserGroupBean;
                    ListItem itm = new ListItem(dataBean.SysUserId, dataBean.SysUserId);
                    lstGetUser.Items.Add(itm);
                }
            }
        }
    }
    #endregion

    #region 添加权限按钮
    /*
     *名称： btnPermissionAdd_Click
     *功能： 左击添加权限按钮
     *参数： 无
     *返回： 无
     *说明： 无
     */
    protected void btnPermissionAdd_Click(object sender, EventArgs e)
    {
        if (lstSetPermission.SelectedIndex != -1 && systemFlg == false)
        {
            lstGetPermission.SelectedIndex = -1;
            int i = 0;
            IEnumerator enm = lstSetPermission.Items.GetEnumerator();
            while (enm.MoveNext())
            {
                ListItem itm = enm.Current as ListItem;
                if (itm.Selected == true)
                {
                    IList lst = new ArrayList();
                    ClassNameBean dataBean = new ClassNameBean();
                    GroupMaintenanceDao Dao = new GroupMaintenanceDao();
                    dataBean.ClassName = itm.Value;
                    dataBean.GroupId = lblGroupId.Text;
                    SysUserManager manager = new SysUserManager(Context);
                    SysUserBean sysUserBean = manager.getSysUserBean();
                    MstSysUserBean mstSysUserBean = sysUserBean.getMstSysUserBean();
                    dataBean.UserId = mstSysUserBean.SysUserId;
                    lst.Add(dataBean);
                    Dao.InsertGroupPermissionLst(lst);
                    lstGetPermission.Items.Add(itm);
                    i++;
                }
            }
            for (int j = 0; j <= i; j++)
            {
                lstSetPermission.Items.Remove(lstSetPermission.SelectedItem);
            }
            if (lstSetPermission.Items.Count > 0)
            {
                lstSetPermission.SelectedIndex = 0;
            }
            else
            {
                lstSetPermission.SelectedIndex = -1;
            }
        }
        GroupClear();
        SelectGroup(txtGroupIdSel.Text);
    }
    #endregion

    #region 消除权限按钮
    /*
     *名称： btnPermissionDel_Click
     *功能： 左击消除权限按钮
     *参数： 无
     *返回： 无
     *说明： 无
     */
    protected void btnPermissionDel_Click(object sender, EventArgs e)
    {
        if (lstGetPermission.SelectedIndex != -1 && systemFlg == false)
        {
            lstSetPermission.SelectedIndex = -1;
            int i=0;
            IEnumerator enm = lstGetPermission.Items.GetEnumerator();
            while (enm.MoveNext())
            {
                ListItem itm = enm.Current as ListItem;
                if (itm.Selected == true)
                {
                    IList lst = new ArrayList();
                    ClassNameBean dataBean = new ClassNameBean();
                    GroupMaintenanceDao Dao = new GroupMaintenanceDao();
                    dataBean.ClassName = itm.Value;
                    dataBean.GroupId = lblGroupId.Text;
                    lst.Add(dataBean);
                    Dao.DeleteGroupPermissionLst(lst);
                    lstSetPermission.Items.Add(itm);
                    i++;
                }
            }
            for (int j = 0; j <= i; j++)
            {
                lstGetPermission.Items.Remove(lstGetPermission.SelectedItem);
            }
            if (lstGetPermission.Items.Count > 0)
            {
                lstGetPermission.SelectedIndex = 0;
            }
            else
            {
                lstGetPermission.SelectedIndex = -1;
            }
        }
        GroupClear();
        SelectGroup(txtGroupIdSel.Text);
    }
    #endregion

    #region 添加职员按钮
    /*
     *名称： btnGroupAdd_Click
     *功能： 左击添加职员按钮
     *参数： 无
     *返回： 无
     *说明： 无
     */
    protected void btnGroupAdd_Click(object sender, EventArgs e)
    {
        if (lstSetUser.SelectedIndex != -1)
        {
            int i=0;
            lstGetUser.SelectedIndex = -1;
            IEnumerator enm = lstSetUser.Items.GetEnumerator();
            while (enm.MoveNext())
            {
                ListItem itm = enm.Current as ListItem;
                if (itm.Selected == true)
                {
                    IList lst = new ArrayList();
                    InpUserGroupBean dataBean = new InpUserGroupBean();
                    dataBean.GroupId = lblUserGroupId.Text;
                    dataBean.SysUserId = itm.Value;
                    SysUserManager manager = new SysUserManager(Context);
                    SysUserBean sysUserBean = manager.getSysUserBean();
                    MstSysUserBean mstSysUserBean = sysUserBean.getMstSysUserBean();
                    dataBean.UserId = mstSysUserBean.SysUserId;
                    lst.Add(dataBean);
                    GroupMaintenanceDao Dao = new GroupMaintenanceDao();
                    Dao.InsertUserGrouLst(lst);
                    lstGetUser.Items.Add(itm);
                    i++;
                }
            }
            for (int j = 0; j <= i; j++)
            {
                lstSetUser.Items.Remove(lstSetUser.SelectedItem);
            }
            if (lstSetUser.Items.Count > 0)
            {
                lstSetUser.SelectedIndex = 0;
            }
            else
            {
                lstSetUser.SelectedIndex = -1;
            }
        }
        GroupClear();
        SelectGroup(txtGroupIdSel.Text);
    }
    #endregion

    #region 消除职员按钮
    /*
     *名称： btnGroupDel_Click
     *功能： 左击消除职员按钮
     *参数： 无
     *返回： 无
     *说明： 无
     */
    protected void btnGroupDel_Click(object sender, EventArgs e)
    {
        if (lstGetUser.SelectedIndex != -1)
        {
            int i=0;
            lstSetUser.SelectedIndex = -1;
            IEnumerator enm = lstGetUser.Items.GetEnumerator();
            while (enm.MoveNext())
            {
                ListItem itm = enm.Current as ListItem;
                if (itm.Selected == true)
                {
                    IList lst = new ArrayList();
                    InpUserGroupBean dataBean = new InpUserGroupBean();
                    dataBean.GroupId = lblUserGroupId.Text;
                    dataBean.SysUserId = itm.Value;
                    lst.Add(dataBean);
                    GroupMaintenanceDao Dao = new GroupMaintenanceDao();
                    Dao.DeleteGroupUserGroupLst(lst);
                    lstSetUser.Items.Add(itm);
                    i++;
                }
            }
            for (int j = 0; j <= i; j++)
            {
                lstGetUser.Items.Remove(lstGetUser.SelectedItem);
            }
            if (lstGetUser.Items.Count > 0)
            {
                lstGetUser.SelectedIndex = 0;
            }
            else
            {
                lstGetUser.SelectedIndex = -1;
            }
        }
        GroupClear();
        SelectGroup(txtGroupIdSel.Text);
    }
    #endregion

    #region 登录按钮
    /*
     *名称： btnAdd_Click
     *功能： 左击登录按钮
     *参数： 无
     *返回： 无
     *说明： 更新部门名称
     */
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        if (ComValidator2.DoValidator() && txtGroupId.Text != string.Empty)
        {
            MstGroupBean dataDean=new MstGroupBean();
            dataDean.GroupId=txtGroupId.Text;
            dataDean.GroupName=txtGroupName.Text;
            SysUserManager manager = new SysUserManager(Context);
            SysUserBean sysUserBean = manager.getSysUserBean();
            MstSysUserBean mstSysUserBean = sysUserBean.getMstSysUserBean();
            dataDean.UserId = mstSysUserBean.SysUserId;
            GroupMaintenanceDao Dao = new GroupMaintenanceDao();
            Dao.UpdateMstGroup(dataDean);
        }
        GroupClear();
        SelectGroup(txtGroupIdSel.Text);
    }
    #endregion

    #region 删除按钮
    /*
     *名称： btnDel_Click
     *功能： 左击删除按钮
     *参数： 无
     *返回： 无
     *说明： 物理删除部门
     */
    protected void btnDel_Click(object sender, EventArgs e)
    {
        if (txtGroupId.Text != string.Empty)
        {
            MstGroupBean dataDean = new MstGroupBean();
            dataDean.GroupId = txtGroupId.Text;
            dataDean.GroupName = txtGroupName.Text;
            GroupMaintenanceDao Dao = new GroupMaintenanceDao();
            Dao.DeleteGroupPermission(dataDean);
            Dao.DeleteInpUserGroup(dataDean);
            Dao.DeleteMstGroupr(dataDean);
            GroupClear();
        }
    }
    #endregion

    #region 取消输入按钮
    /*
     *名称： btnCancel_Click
     *功能： 左击取消输入按钮
     *参数： 无
     *返回： 无
     *说明： 无
     */
    protected void btnCancel_Click(object sender, EventArgs e)
    {
        txtGroupName.Text = string.Empty;
    }
    #endregion
}
